/*
 * layui的初始化模块可以理解为，引入这个模块的js文件
 * 值得注意的是：layui的模块之间存在依赖关系，例如引入了table模块，它会layui/lay/moudules/table.js
 * 这个文件引入进来，并且它还会将这个模块所依赖的其他模块自动加入进来，
 * 实际引入的模块有：table、form、jquery、layer、laypage、laytpl、util，7个js文件
 * 所以我仅仅初始化了table模块，却能获得form、jquery、layer的模块对象
 */
//layui初始化表格模组
layui.use([ 'table' ], function() {
	// 获得模块对象
	var table = layui.table;
	var form = layui.form;
	var $ = layui.jquery;
	var layer = layui.layer;

	// 数据表格渲染
	table.render({
		elem : '#resourceTable',
		url : 'base/standards',
		method : 'get',
		where : {} // 你额外要携带数据，以键值对的方式存入
		,
		toolbar : '#resourceToolbar' // 开启头部工具栏，并为其绑定左侧模板
		,
		cellMinWidth : 80 // 全局定义所有常规单元格的最小宽度（默认：60）
		,
		cols : [ [ {
			type : 'numbers'
		} // 序号
		, {
			type : 'checkbox'
		} // 复选框
		, {
			field : 'standardName',
			title : '取派标准'
		}, {
			field : 'minWeight',
			title : '最小重量'
		}, {
			field : 'maxWeight',
			title : '最大重量'
		}, {
			field : 'description',
			title : '描述'
		},{
			fixed : 'right',
			align : 'center',
			title : '是否可用',
			width : 100,
			templet : '#checkboxTpl',
			unresize : true
		} ] ],
		page : true // 开启分页
		,
		limit : 10 // 每页显示的条数
		,
		limits : [ 1, 5, 10, 20, 50, 100 ] // 每页条数的选择项
		,
		loading : true // 是否显示加载条(切换分页的时候显示）
		,
		title : '取派标准表' // 定义 table 的大标题（在文件导出等地方会用到）
		// ,id: 'resourceTable' // 设定容器唯一 id
		,
		even : false
	// 隔行变色
	});
	// ---------------------------------
	// 头部搜素表单提交
	form.on('submit(resourceSearchBtn)', function(data) {
		/*console.log(data.elem) // 被执行事件的元素DOM对象，一般为button对象
		console.log(data.form) // 被执行提交的form对象，一般在存在form标签时才会返回
		console.log(data.field) // 当前容器的全部表单字段，名值对形式：{name: value}
*/		 
		 // 执行后台代码
		// 刷新数据表格
		table.reload('resourceTable', {
			url : 'base/standards',
			where : { // 设定异步数据接口的额外参数，任意设
				standardName : $("#standardNameth").val(),
				minWeight : $("#minWeightth").val(),
				maxWeight : $("#maxWeightth").val(),
				userable : $("#userableth").val(),
			},page:{
				curr:1 //从第一页开始
			},limit:10
		});
		return false; // 阻止表单跳转。如果需要表单跳转，去掉这段即可。
	});
	//--------------------------------------
/*	//前端校验
	form.verify({
		// 我们既支持上述函数式的方式，也支持下述数组的形式
		// 数组的两个值分别代表：[正则匹配、匹配不符时的提示文字]
		serial : [ /^[\S]{1,6}$/, '职工编号必须在1~6位内' ],
		name : [ /^[\S]{1,6}$/, '职工名必须在1~6位内' ],
		name1 : [ /^[a-zA-Z]\w{0,19}$/, '第一个必须是字母且不能为中文' ],
		descriptor : [ /^.{10,30}$/, '请输入10~30的简介' ]

	}); */
	// 新增表单提交
	form.on('submit(addResourceBtn)', function(data) {
		/*
		 * console.log(data.elem) // 被执行事件的元素DOM对象，一般为button对象
		 * console.log(data.form) // 被执行提交的form对象，一般在存在form标签时才会返回
		 * console.log(data.field) // 当前容器的全部表单字段，名值对形式：{name: value}
		 */
		/*data.field.teStTename = $("#teStTeId :selected").text();
		data.field.sdSdd = $("#sdSddId :selected").text();*/
		// 执行后台代码
		$.ajax({
			type : 'POST',
			async : false,
			url : 'base/addstandard',
			data : data.field,
			success : function(data) {
				if (data == 1) {
					layer.msg("成功！", {
						icon : 1, // 图标，可输入范围0~6
						time : 2500
					// 2秒关闭（如果不配置，默认是3秒）
					});
				} else {
					layer.msg("失败！", {
						icon : 1, // 图标，可输入范围0~6
						time : 2500
					// 2秒关闭（如果不配置，默认是3秒）
					});
				}
				// 关闭页面上所有类型的所有弹框
				layer.closeAll();
			}
		});
		// 刷新数据表格
		table.reload('resourceTable', {
			url : 'base/standards'
		});
		return false; // 阻止表单跳转。如果需要表单跳转，去掉这段即可。
	});

	// 修改表单提交
	form.on('submit(updateResourceBtn)', function(data) {
	/*	console.log(data.elem) // 被执行事件的元素DOM对象，一般为button对象
		console.log(data.form) // 被执行提交的form对象，一般在存在form标签时才会返回
		console.log(data.field) // 当前容器的全部表单字段，名值对形式：{name: value}
*/	/*	data.field.teStTename = $("#teStTeIdht :selected").text();
		data.field.sdSdd = $("#sdSddIdht :selected").text();*/
		// 执行后台代码
			$.ajax({
			type : 'post',
			async : false,
			url : 'base/updatestandard',
			data : data.field,
			success : function(data) {
				if (data == 1) {
					layer.msg("成功！", {
						icon : 1, // 图标，可输入范围0~6
						time : 2500
					// 2秒关闭（如果不配置，默认是3秒）
					});
				} else {
					layer.msg("失败！", {
						icon : 1, // 图标，可输入范围0~6
						time : 2500
					// 2秒关闭（如果不配置，默认是3秒）
					});
				}
				// 关闭页面上所有类型的所有弹框
				layer.closeAll();
			}
		});
		// 刷新数据表格
		table.reload('resourceTable', {
			url : 'base/standards'
		});
		return false; // 阻止表单跳转。如果需要表单跳转，去掉这段即可。
	});

	// 头工具栏事件
	table.on('toolbar(resourceTableEvent)', function(obj) {
		// 获取当前表格选中状态和选中的数据
		var checkStatus = table.checkStatus(obj.config.id);
		// 区分点击的按钮
		switch (obj.event) {
		case 'addResource':
			// 弹出新增模态框
			initAddResourceModal();
			break;
		case 'updateResource':
			// 选择的数据数量
			if (checkStatus.data.length > 1) {
				layer.msg( "最多只能修改一行数据哦！！", {
					icon : 0, //图标，可输入范围0~6
					time : 2500
				//2秒关闭（如果不配置，默认是3秒）
				});
			} else if (checkStatus.data.length < 1) {
				layer.msg( "请选择要修改的数据哦！！", {
					icon : 3, //图标，可输入范围0~6
					time : 2500
				//2秒关闭（如果不配置，默认是3秒）
				});
			}  else if (checkStatus.data[0].userable=='N') {
				layer.msg( "该职工被禁用了哦！！", {
					icon : 4, //图标，可输入范围0~6
					time : 2500
				//2秒关闭（如果不配置，默认是3秒）
				});
			} 
			else {
				// 弹出修改模态框，传递当前选中的一行数据过去
				initUpdateResourceModal(checkStatus.data[0]);
			}
			break;
		case 'frozenRecord':
			// 当前选中行的数据
			var data = checkStatus.data;
			if (checkStatus.data.length < 1) {
				layer.msg( "请选择你要冻结的！！", {
					icon : 4, //图标，可输入范围0~6
					time : 2500//2秒关闭（如果不配置，默认是3秒）
				});
			}
			// 定义一个要删除的所有资源ID的字符串
			var standardIdStr = "";
			// 遍历传递过来的要删除的数据
			for (var i = 0; i < data.length; i++) {
				if (data[0].userable=='N') {
					layer.msg("所选中有被冻结的！", {
						icon : 1, // 图标，可输入范围0~6
						time : 2500
					// 2秒关闭（如果不配置，默认是3秒）
					});
					return;
				}
				// 拿出资源ID进行拼接
				standardIdStr += data[i].standardId + ",";

			}
			// 截取掉因为拼接产生的多余的一个逗号
			standardIdStr = standardIdStr.substring(0, standardIdStr.length - 1);
			frozenORrecoverArchives(standardIdStr, 'N');
			break;
		case 'restoreRecord':
			// 当前选中行的数据
			var data = checkStatus.data;
			//判断是否有选中
			if (checkStatus.data.length < 1) {
				layer.msg( "请选择你要还原的！！", {
					icon : 4, //图标，可输入范围0~6
					time : 2500//2秒关闭（如果不配置，默认是3秒）
				});
			}
			// 定义一个要删除的所有资源ID的字符串
			var standardIdStr = "";
			// 遍历传递过来的要删除的数据
			for (var i = 0; i < data.length; i++) {
				if (data[i].userable=='Y') {
					layer.msg("所选中有可用的！", {
						icon : 1, // 图标，可输入范围0~6
						time : 2500
					// 2秒关闭（如果不配置，默认是3秒）
					});
					return;
				}
				// 拿出资源ID进行拼接
				standardIdStr += data[i].standardId + ",";
			}
			// 截取掉因为拼接产生的多余的一个逗号
			standardIdStr = standardIdStr.substring(0, standardIdStr.length - 1);
			frozenORrecoverArchives(standardIdStr, 'Y');
			break;
		}
		;
	});
	// 监听锁定操作
	form.on('switch(useable)', function(obj) {
		frozenORrecoverArchives(obj.value, this.checked == true ? 'Y' : 'N');
	});
	// 关闭模态框 新增和修改模态框共用这个点击事件
	$(".modalClose").click(function() {
		// 关闭页面上所有类型的所有弹框
		layer.closeAll();
	});
	var frozenORrecoverArchives = function(standardIdStr, status) {
		// 基础档案IDisUsable
		var standardId = standardIdStr;
		// 定义提示信息, 状态
		var msg, userable;
		if (status == 'Y') {
			msg = "还原", userable = 'Y';
		} else {
			msg = "禁用", userable = 'N';
		}
		// 发送异步请求冻结或还原资源
		$.ajax({
			async : false, // 默认为true，false表示同步，如果当前请求没有返回则不执行后续代码
			type : "post",
			url : 'base/standard/' + standardId + "/" + userable,
			data : {
				_method : 'DELETE'
			},
			datatype : 'json',
			success : function(result) {
				if (result == "success") {
					layer.msg(msg + "成功！", {
						icon : 1, // 图标，可输入范围0~6
						time : 2500
					// 2秒关闭（如果不配置，默认是3秒）
					});
				} else {
					layer.msg(msg + "失败！", {
						icon : 2,
						time : 2500
					});
				}
				// 刷新数据表格
				table.reload('resourceTable', {
					url : 'base/standards'
				});
			}
		});
	}

	// 初始化新增模态框
	var initAddResourceModal = function() {
		// 弹出一个页面层
		layer.open({
			type : 1 // 基本层类型0~4，1为页面层
			,
			title : '添加职员' // 标题
			,
			area : [ '400px'] // 宽高 只写一个参数就是表示宽度，高度会自适应
			,
			content : $("#addResourceModal") // 文本、html都行
			,
			anim : 0 // 弹出动画
			,
			resize : false // 是否允许拉伸
			,
			end : function() { // 弹出层销毁时的回调函数（不论何种方式，只要关闭了就执行）
				// 清空表单
				$("#addResourceForm")[0].reset();
			}
		});

	}

	// 初始化修改模态框
	var initUpdateResourceModal = function(data) {
		// 弹出一个页面层
		layer.open({
			type : 1 // 基本层类型0~4，1为页面层
			,
			title : '修改职员' // 标题
			,
			area : [ '400px' ] // 宽高 只写一个参数就是表示宽度，高度会自适应
			,
			content : $("#updateResourceModal") // 文本、html都行
			,
			anim : 0 // 弹出动画
			,
			resize : false // 是否允许拉伸
			,
			end : function() { // 弹出层销毁时的回调函数（不论何种方式，只要关闭了就执行）
				// 清空表单
				$("#updateResourceForm")[0].reset();
			}
		});

		// 表单赋值
		form.val('updateResourceForm', {
			"standardId" : data.standardId,
			"standardName" : data.standardName,
			"minWeight" : data.minWeight,
			"maxWeight" : data.maxWeight,
			"description" : data.description,
		});
	}
});
